package com.ruoyi.system.domain.bo;

import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 咨询优惠券业务对象 p_ask_coupon
 *
 * @author ruoyi
 * @date 2022-07-28
 */

@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("咨询优惠券业务对象")
public class PAskCouponBo extends BaseEntity {

    /**
     * 优惠券表ID
     */
    @ApiModelProperty(value = "优惠券表ID", required = true)
    @NotNull(message = "优惠券表ID不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 优惠券名称
     */
    @ApiModelProperty(value = "优惠券名称", required = true)
    @NotBlank(message = "优惠券名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String name;

    /**
     * 兑换的优惠券面值
     */
    @ApiModelProperty(value = "兑换的优惠券面值", required = true)
    @NotNull(message = "兑换的优惠券面值不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal money;

    /**
     * 是否限量, 默认0 不限量， 1限量
     */
    @ApiModelProperty(value = "是否限量, 默认0 不限量， 1限量", required = true)
    @NotNull(message = "是否限量, 默认0 不限量， 1限量不能为空", groups = { AddGroup.class, EditGroup.class })
    private String isLimited;

    /**
     * 发放总数
     */
    @ApiModelProperty(value = "发放总数", required = true)
    private Long total;

    /**
     * 剩余数量
     */
    @ApiModelProperty(value = "剩余数量", required = true)
    private Long lastTotal;

    /**
     * 使用类型 1 全场通用, 2 商品券, 3 品类券
     */
    @ApiModelProperty(value = "使用类型 1 全场通用, 2 商品券, 3 品类券", required = true)
    private String useType;

    /**
     * 所属商品id / 分类id
     */
    @ApiModelProperty(value = "所属商品id / 分类id", required = true)
    private Long primaryKey;

    /**
     * 最低消费，0代表不限制
     */
    @ApiModelProperty(value = "最低消费，0代表不限制", required = true)
    private BigDecimal minPrice;

    /**
     * 可领取开始时间
     */
    @ApiModelProperty(value = "可领取开始时间", required = true)
    private Date receiveStartTime;

    /**
     * 可领取结束时间
     */
    @ApiModelProperty(value = "可领取结束时间", required = true)
    private Date receiveEndTime;

    /**
     * 是否固定使用时间, 默认0 否， 1是
     */
    @ApiModelProperty(value = "是否固定使用时间, 默认0 否， 1是", required = true)
    private String isFixedTime;

    /**
     * 可使用时间范围 开始时间
     */
    @ApiModelProperty(value = "可使用时间范围 开始时间", required = true)
    private Date useStartTime;

    /**
     * 可使用时间范围 结束时间
     */
    @ApiModelProperty(value = "可使用时间范围 结束时间", required = true)
    private Date useEndTime;

    /**
     * 天数
     */
    @ApiModelProperty(value = "天数", required = true)
    private Integer day;

    /**
     * 优惠券类型 1 手动领取, 2 新人券, 3 赠送券
     */
    @ApiModelProperty(value = "优惠券类型 1 手动领取, 2 新人券, 3 赠送券", required = true)
    @NotNull(message = "优惠券类型 1 手动领取, 2 新人券, 3 赠送券不能为空", groups = { AddGroup.class, EditGroup.class })
    private String type;

    /**
     * 排序
     */
    @ApiModelProperty(value = "排序", required = true)
    private Long sort;

    /**
     * 状态（0：关闭，1：开启）
     */
    @ApiModelProperty(value = "状态（0：关闭，1：开启）", required = true)
    @NotNull(message = "状态（0：关闭，1：开启）不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer status;


}
